﻿/*
 * Creado por SharpDevelop.
 * Usuario: Pavilion
 * Fecha: 29/09/2011
 * Hora: 11:05 p.m.
 * 
 * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using Negocio;
using Excepciones;

namespace Clase2
{
	public partial class AltaDeVehiculoForm : Form
	{
		private Vehiculo vehiculo;
		private Propietario seleccionado;
		private List<Propietario> propietarios;
		private Sistema sistema;
		
		public AltaDeVehiculoForm(List<Propietario> propietarios, Sistema sistema)
		{
			InitializeComponent();
			vehiculo          = new Vehiculo();
			this.propietarios = propietarios;
			cmb_propietarios.DataSource = propietarios;
			this.sistema = sistema;
		}
		
		public Vehiculo Vehiculo {
			get { return vehiculo; }
			set { vehiculo = value; }
		}
		
		
		void Btn_cerrarClick(object sender, EventArgs e)
		{
			this.Close();
		}
		
		void Button1Click(object sender, EventArgs e)
		{
			try {				
				this.validarDatos();
				this.prepararVehiculo();
				this.limpiarComponentes();
			}
			catch (VacioException e1) {
				MessageBox.Show(e1.Message);
			}
			catch (ComboVacioException e2) {
				MessageBox.Show(e2.Message);
			}
		}
		
		private void prepararVehiculo() {
			Vehiculo vehiculo = new Vehiculo();
			vehiculo.Dominio = txt_dominio.Text.ToUpper();
			vehiculo.Marca   = txt_marca.Text;
			vehiculo.Modelo  = int.Parse(txt_modelo.Text);
			vehiculo.Propietario = seleccionado;
				
			if(!sistema.chequearVehiculo(vehiculo)) {
				seleccionado.agregarVehiculo(vehiculo);
				vehiculo.guardarVehiculo();
				this.Close();
			}
			else {
				MessageBox.Show("El Vehiculo ya existe en el sistema: " + vehiculo.Dominio);	
			}							
		}
		
		private void validarDatos() {
			if (txt_dominio.Text.Length == 0) {
				throw new VacioException("Dominio");
			}
			if (txt_marca.Text.Length == 0) {
				throw new VacioException("Marca");
			}
			if (txt_modelo.Text.Length == 0) {
				throw new VacioException("Modelo");
			}
			if (cmb_propietarios.SelectedItem == null) {
				throw new ComboVacioException("Propietario");
			}
		}
		
		private void cargarComponentes() {
			
		}
				
		private void limpiarComponentes() {
			string vacio = "";
			
			txt_modelo.Text  = vacio;
			txt_dominio.Text = vacio;
			txt_marca.Text   = vacio;
		}
		
		void Button2Click(object sender, EventArgs e)
		{
			this.limpiarComponentes();
		}
		
		void Cmb_propietariosSelectedIndexChanged(object sender, EventArgs e)
		{
			if(cmb_propietarios.SelectedIndex != -1) {
				this.seleccionado = (Propietario)cmb_propietarios.SelectedItem;
			}
		}
		
		void Txt_dominioKeyPress(object sender, KeyPressEventArgs e)
		{
			if (((e.KeyChar) < 48 && e.KeyChar != 8) || e.KeyChar > 57 ){
			MessageBox.Show("Sólo se permiten Números");
			e.Handled = true;
			}        	        	        							
		}
		
		void Txt_modeloKeyPress(object sender, KeyPressEventArgs e)
		{
			if (((e.KeyChar) < 48 && e.KeyChar != 8) || e.KeyChar > 57 ){
			MessageBox.Show("Sólo se permiten Números");
			e.Handled = true;
			}        	        	        							
		}
		
	}
}
